1. Field of the Invention
The invention relates to computer systems, and more particularly to the access of data from a database system.
2. Background
A “table” is a basic unit of storage in a relational or object-relational database system. Each table comprises one or more rows and columns. Each column is typically associated with a column name and a column datatype. A row comprises a set of related column data, and normally corresponds to a single database record.
“Metadata” is information in a database system that describes and defines other data. Metadata information includes data that describes the structure and parameters of tables and data maintained in the system, such as the exact column configuration or column “signature” of database tables. In many database systems, metadata is maintained separately from its associated data and tables, and is collected into a central “data dictionary.” Thus, the data dictionary normally contains the foundational data that sets forth the basic structures of storage entities in a database system. When creating a new database table, the schema definition of that new table must be entered in the data dictionary before it is recognized by the system. If the schema definition of a table is changed (e.g., a column is to be added or dropped from the table), the associated metadata for that table must be modified in the data dictionary before the schema change is recognized.
Because metadata in the system data dictionary is so foundational to the integrity of a database system, there are normally severe limitations upon the extent of access permitted to the data dictionary. In many database systems, while a normal user has read-access to the data dictionary, only an authorized database administrator (“DBA”) is given sufficient system privileges to make modifications.
The drawback to these restrictions is that normal database users may need to make structural modifications to a database table in the course of their daily activities, which cannot be readily made if these users do not have sufficient system privileges. For example, it may be necessary to add columns to a database table to store data being accessed by a user. Since the typical user is not granted sufficient privileges to modify the data dictionary, the user must wait for a DBA to make the changes on his behalf. This adds additional levels of delays and resources to perform the task of adding a new column to the table. Yet, the solution cannot be to simply grant the user sufficient privileges to modify the data dictionary, since there is a tremendous risk that a normal user may make an error when modifying the system metadata, causing severe and unintended damage to the structural integrity of the system.
Another drawback is that in conventional database systems, each database table must have its definitional metadata registered in the data dictionary before it can be accessed by users. The metadata costs do not significantly change if the table is intended to hold only a small amount of data. Consider if a user wishes to create a number of database tables that each store a small amount of data. System costs must be expended to generate and store the metadata for each database table. Under these circumstances, a significant proportion of the overhead associated with the database tables is expended just for the metadata in the data dictionary. While the relative metadata costs may be acceptable for a small number of tables containing a large amount of data, the relative costs may be inordinately high for a large number of tables designed to each hold only a small quantity of data.